In many computing environments, information may be passed from one device to another typically more powerful device to perform certain computing tasks, such as processing, storage, or communication. Such information may include processes, data, functions, or any other information that consumes computing resources. Information may be sent in packet form or in some other type of data stream in various applications. For example, a virtual machine (VM) may be segmented into two segments: a shell VM and a core VM. Function calls to the shell VM may be passed to the core VM for processing. Segmented virtual machines are further described in U.S. patent application Ser. No. 10/378,061, entitled SEGMENTED VIRTUAL MACHINE filed Feb. 28, 2003, which is incorporated herein by reference for all purposes.
FIG. 1 is a block diagram illustrating a system with a segmented virtual machine 100. In this example, VM functionality is segmented into shell VM 108 and core VM 112. Shell VM 108 performs interactions with the external environment, such as with external application 104. Core VM 112 performs VM internal execution functions. External interactions may be passed from external application 104 through shell VM 108 to core VM 112 for processing. For example, file or network I/O, operating system calls, and other native library interactions may be passed to/from core VM 112. These interactions may be forwarded using remote procedure calls (RPC). Many of these interactions may include reading or writing data streams to/from a network socket or a file. For example, an application running on core VM 112 opening a network socket connection may read data from the socket incrementally (e.g., one byte at a time). Each read is associated with a separate RPC, which introduces latency. If there is enough data being read, the latency can be significant. It would be desirable to reduce the latency associated with forwarding certain types of interactions through the shell VM.